/**
 * SessionStorage 工具类
 */
class SessionUtil {
  /**
   * 设置 session 值
   * @param {string} key - 键名
   * @param {any} value - 键值
   */
  static set(key, value) {
    try {
      sessionStorage.setItem(key, JSON.stringify(value));
    } catch (error) {
      console.error(`设置 session 失败: ${key}`, error);
    }
  }

  /**
   * 获取 session 值
   * @param {string} key - 键名
   * @param {any} defaultValue - 默认值
   * @returns {any} 存储的值或默认值
   */
  static get(key, defaultValue = null) {
    try {
      const item = sessionStorage.getItem(key);
      return item ? JSON.parse(item) : defaultValue;
    } catch (error) {
      console.error(`获取 session 失败: ${key}`, error);
      return defaultValue;
    }
  }

  /**
   * 删除指定的 session 项
   * @param {string} key - 键名
   */
  static remove(key) {
    try {
      sessionStorage.removeItem(key);
    } catch (error) {
      console.error(`删除 session 失败: ${key}`, error);
    }
  }

  /**
   * 清空所有 session 数据
   */
  static clear() {
    try {
      sessionStorage.clear();
    } catch (error) {
      console.error('清空 session 失败', error);
    }
  }

  /**
   * 检查是否存在指定键名的 session 项
   * @param {string} key - 键名
   * @returns {boolean} 是否存在
   */
  static has(key) {
    return sessionStorage.getItem(key) !== null;
  }
}

export default SessionUtil;
